<?php

namespace Coldwind;

/**
 * 模块定义类
 * @author ZXZ <zxz054321@163.com>
 */
abstract class Module {

    /**
     * $info = array(
     *  'name'=>'ModuleName',
     *  'title'=>'模块名称',
     *  'description'=>'模块描述',
     *  'author'=>'ZXZ',
     *  'version'=>'0.1'
     *  'has_admin'=>'0',//是否拥有管理后台
     *  'status'=>1,//默认是否启用
     *  );
     */
    public $info = array();

    final public function getName() {
        $class = get_class($this);
        return substr($class, strrpos($class, '\\') + 1, -6);
    }

    final public function checkInfo() {
//        E('TODO:checkInfo');
//        $info_check_keys = array('name', 'title', 'description', 'status', 'author', 'version');
//        foreach ($info_check_keys as $value) {
//            if (!array_key_exists($value, $this->info))
//                return FALSE;
//        }
        return TRUE;
    }

    //必须实现安装
    abstract public function install();

    //必须实现卸载
    abstract public function uninstall();

    /**
     * 执行SQL文件（用于安装卸载）
     * @param string $name 文件名（不带后缀.sql）
     */
    protected function excuteSqlFile($name) {
        excute_sql_file(
                APP_PATH . $this->getName() . '/' . $name . '.sql'
        );
    }

}
